﻿using System;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.PreBoleto;

namespace Sinacor.UI.Bovespa.Ordens.Communication
{
    public class PreBoleto : BaseCommunication
    {
        #region Construtor
        public PreBoleto(SessionInformation sessionInformatio)
            : base(sessionInformatio)
        {

        }
        #endregion Construtor

        #region Metodo
        /// <summary>
        /// Metodo Responsavel por realizar o Casamento de PreBoletos(nr_subseq > 0)
        /// Usado em: View.ManutencaoOrdem
        /// </summary>
        /// <param name="pRealizarCasamentoPreBoleto"></param>
        /// <param name="pTipoCasamentoPreBoleto"></param>
        /// <returns></returns>
        public Model.RealizarCasamento RealizarCasamentoPreBoleto(Model.Parameter.RealizarCasamentoPreBoleto pRealizarCasamentoPreBoleto, Model.Enum.TipoCasamentoPreBoleto pTipoCasamentoPreBoleto)
        {
            IPreBoleto objIPreBoleto = null;
            Model.RealizarCasamento objRealizarCasamento = null;

            try
            {
                using (ServiceInstance<IPreBoleto> serviceManager = new ServiceInstance<IPreBoleto>())
                {
                    objIPreBoleto = serviceManager.TryGetInstance(this.Session);
                    objRealizarCasamento = new Translator.RealizarCasamentoToModel().Translate(objIPreBoleto.RealizarCasamentoPreBoletoFIN(new Translator.RealizarCasamentoPreBoletoToRequest().Translate(pRealizarCasamentoPreBoleto), new Translator.TipoCasamentoPreBoletoToRequestEnum().Translate(pTipoCasamentoPreBoleto)));
                }
            }
            catch (Exception ex)
            {
                HandleFault(ex);
            }

            return objRealizarCasamento;
        }
        #endregion Metodo
    }
}
